package com.jiesen.resource.utils;

import com.jiesen.resource.modules.uploadFile.model.FileAttributes;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

public class FileAttributesUtil {

    /**
     * 新建文件属性信息
     * @param multipartFile 传入的文件
     * @param name     手写名称
     * @return
     */
    public static FileAttributes multipartFileToFileAttributes(MultipartFile multipartFile,String name){

        FileAttributes fileAttributes = multipartFileToFileAttributes(multipartFile, new FileAttributes(),name);

        //默认文件夹为0
        fileAttributes.setFolderId(0);

        //创建时间
        fileAttributes.setUploadTime(new Date());

        return fileAttributes;
    }

    /**
     * 初始化文件信息
     * @param multipartFile     传入的文件
     * @param fileAttributes    文件信息
     * @param name              手写名称
     * @return
     */
    public static FileAttributes multipartFileToFileAttributes(MultipartFile multipartFile,FileAttributes fileAttributes,String name){
        //文件名称
        String oldName = multipartFile.getOriginalFilename();
        int i = oldName.lastIndexOf(".");
        //文件名称前缀
        String prefix = oldName.substring(0,i);
        //文件名称后缀
        String suffix = oldName.substring(i);

        //接收的文件放入
        fileAttributes.setMultipartFile(multipartFile);
        //手写名称
        name = StringUtils.isEmpty(name) ? oldName : name;
        fileAttributes.setName(name);
        //原文件名称
        fileAttributes.setOldName(oldName);
        //文件大小
        fileAttributes.setSize(multipartFile.getSize());
        //文件后缀名
        fileAttributes.setSuffixName(suffix);
        //服务器文件名称
        fileAttributes.setServerName(newFileName()+suffix);

        return fileAttributes;
    }

    //新文件名称（时间_uuid.后缀）
    public static String newFileName(){
        SimpleDateFormat da = new SimpleDateFormat("yyyyMMdd");
        String format = da.format(new Date());
        return format+"_"+UUID.randomUUID().toString();
    }

}
